package com.rgs.se.sort;



/**
 * @author Ren Gaoshuai
 * @ClassName _1SelectSort
 * @date 2022-06-04 21:52
 **/
public class _1SelectSort {

    /**
     * 选择排序
     *
     * @param arr 待排序数组
     */
    public static void selector(int[] arr) {
        //从i-最后的元素汇总 找到最小的或最大的
        for (int i = 0; i < arr.length; i++) {
            //让第一个值表示最小的，后面的依次比较
            int index = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[index]) {
                    index = j;
                }
            }
            //最小的下标有无变化，有的话就交换
            if (i != index) {
                int temp = arr[index];
                arr[index] = arr[i];
                arr[i] = temp;
            }
        }
        System.out.println("选择排序:");
        SortUtil.Print(arr);

    }

    public static void select(int[] arr){
        //元素个数
        for (int i = 0; i < arr.length; i++) {
            int index = i;
            //基准 与 基准向后比较
            for (int j = i+1;j<arr.length;j++){
                if(arr[j] < arr[index]){
                    index = j;
                }
            }
            if (index != i){
                SortUtil.Temp(arr,i,index);
            }

        }
        System.out.println("选择排序成功");
        SortUtil.Print(arr);
    }

    public static void main(String[] args) {
        int [] arr = {11,8,3,15,7,5,26,39,23,15};
        System.out.println("排序前的数组为：");
        SortUtil.Print(arr);
        select(arr);
    }
}
